Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

237
Vistas
Error no detectado: [Elementos] no es un componente de <Ruta>. Todos los componentes secundarios de <Routes> deben ser <Route> o <React.Fragment>

Estaba tratando de integrar la clave API de la tira, pero no puedo encontrar la solución en la nueva versión de react-router-dom

aqui esta el error completo

El error anterior ocurrió en el componente:

 at Routes (http://localhost:3000/static/js/bundle.js:81119:5) at Router (http://localhost:3000/static/js/bundle.js:81052:15) at BrowserRouter (http://localhost:3000/static/js/bundle.js:79861:5) at App (http://localhost:3000/main.79cc3231add2da1b35a8.hot-update.js:89:63) at Provider (http://localhost:3000/static/js/bundle.js:74963:5)

Considere agregar un límite de error a su árbol para personalizar el comportamiento del manejo de errores. Visite https://reactjs.org/link/error-boundaries para obtener más información sobre los límites de error.

aquí está mi código de ruta protegida de Appjs:

 import { Elements } from "@stripe/react-stripe-js"; import { loadStripe } from "@stripe/stripe-js"; useEffect(() => { store.dispatch(loadUser()); getStripeApiKey(); }, []); useEffect(() => { const stripePromise= loadStripe(stripeApiKey); }, [stripeApiKey]); <Route element={<ProtectedRoute />}> <Route path="/account" element={<Profile />} /> <Route path="/me/update" element={<ProfileEdit />} /> <Route path="/password/update" element={<UpdatePassword />} /> <Route path="/login/shipping" element={<Shipping />} /> <Route path="/order/confirm" element={<ConfirmOrder />} /> {stripeApiKey && ( <Elements stripe={stripePromise}> <Route path="/order/payment" element={<Payment />} /> </Elements> )} </Route>

Mi código de ruta protegido

 const ProtectedRoute = () => { const { loading, isAuthenticated, user } = useSelector((state) => state.user); const location = useLocation(); if (isAuthenticated == false) { return <Navigate to="/account" state={{ from: location }} />; } return <Outlet />; }; export default ProtectedRoute;
about 4 years ago · Santiago Gelvez
2 Respuestas
Responde la pregunta

0

Tema

Este problema es que está representando algo que no es una Route o React.Fragment dentro del componente de Routes .

 {stripeApiKey && ( <Elements stripe={stripePromise}> <Route path="/order/payment" element={<Payment />} /> </Elements> )}

El componente Elements no es ninguno de los dos y falla la verificación de invariantes.

Solución

Refactorice esto en un componente de ruta de diseño similar al componente ProtectedRoute .

Ejemplo:

 import { Outlet, Navigate } from 'react-router-dom'; const StripeLayout = ({ stripeApiKey }) => { return stripeApiKey ? <Outlet /> : <Navigate to="/" replace /> };

...

 <Route element={<ProtectedRoute />}> <Route path="/account" element={<Profile />} /> <Route path="/me/update" element={<ProfileEdit />} /> <Route path="/password/update" element={<UpdatePassword />} /> <Route path="/login/shipping" element={<Shipping />} /> <Route path="/order/confirm" element={<ConfirmOrder />} /> <Route element={<StripeLayout {...{ stripeApiKey }} />}> <Route path="/order/payment" element={( <Elements stripe={stripePromise}> <Payment /> </Elements> )} /> </Route> </Route>
about 4 years ago · Santiago Gelvez Denunciar

0

Está recibiendo ese error debido a esta línea de código

 {stripeApiKey && ( <Elements stripe={stripePromise}> <Route path="/order/payment" element={<Payment />} /> </Elements> )}

Solo Route o React.Fragment pueden ser elementos secundarios del componente Routes. Pero en su caso, si stripeApiKey resulta ser cierto, está representando el componente Elements que contradice las nuevas reglas del enrutador de reacción v6

Como pediste en los comentarios, quieres envolver tu método de pago

 <Route path="/order/payment" element={<Elements stripe={stripePromise}><Payment /></Elements} />
about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda